package br.uvv.sao.rn;

import java.io.Serializable;
import java.util.List;

import br.uvv.sao.dao.PerfilDAO;
import br.uvv.sao.domain.Perfil;
import br.uvv.sao.enums.SituPerfil;
import br.uvv.sao.util.DAOException;
import br.uvv.sao.util.RNException;

public class PerfilRN implements Serializable {
	private static final long serialVersionUID = -4941476028153763475L;
	
	private PerfilDAO perfilDAO = new PerfilDAO();
	
	public List<Perfil> listarPerfis(int first, int pageSize, String sortField, Boolean sortOrder) {
		try {
			return this.perfilDAO.listarPerfis(first, pageSize, sortField, sortOrder);
		} catch (DAOException e) {
			System.out.println("ERRO/RN - Listar -> " + e.getMessage());
			return null;
		}
	}

	public int perfilCount() {
		try {
			return this.perfilDAO.perfilCount();
		} catch (DAOException e) {
			System.out.println("ERRO/RN - RowCount -> " + e.getMessage());
			return 0;
		}
	}
	
	public void salvarPerfil(Perfil perfilInstance) throws RNException {
		try {
			this.perfilDAO.salvarPerfil(perfilInstance);
		} catch (DAOException e) {
			System.out.println("ERRO/RN - Salvar -> " + e.getMessage());
			throw new RNException(e);
		}
	}

	public void removerPerfil(Perfil perfilInstance) throws RNException {
		try {
			this.perfilDAO.removerPerfil(perfilInstance);
		} catch (DAOException e) {
			System.out.println("ERRO/RN - Remover -> " + e.getMessage());
			throw new RNException(e);
		}
	}

	public void desativarPerfil(Perfil perfilInstance) throws RNException {
		perfilInstance.setSituacao(SituPerfil.Inativo);
		salvarPerfil(perfilInstance);
	}

	public void ativarPerfil(Perfil perfilInstance) throws RNException {
		perfilInstance.setSituacao(SituPerfil.Ativo);
		salvarPerfil(perfilInstance);
	}

	public Boolean validarNomeUnico(String nome, Long id) throws RNException {
		try {
			Integer contagem = this.perfilDAO.validarNomeUnico(nome, id);
			if (contagem > 0)
				return true;
			return false;
		} catch (DAOException e) {
			throw new RNException(e);
		}
	}
}
